package com.imooc.distributedemo.resume.leetcode;

/**
 * leetcode53 最大子数组之和
 */
public class Solution53 {
    public static void main(String[] args) {
        int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
        int result = findMaxArraySum(nums);
        System.out.println(result);
    }

    private static int findMaxArraySum(int[] nums) {
        // 如果为空数组，返回0
        if(null == nums || 0 == nums.length){
            return 0;
        }
        // 如果数组只有一个元素，返回原值
        if(1 == nums.length){
            return nums[0];
        }
        int maxCurrent = nums[0];
        int maxResult = nums[0];
        for (int i = 1; i < nums.length; i++) {
            // 如果遍历的当前轮次的元素比加上前一个元素更大，则更新；否则不更新
            maxCurrent = Math.max(nums[i],maxCurrent+nums[i]);

            // 更新全局最大值
            maxResult = Math.max(maxResult,maxCurrent);
        }
        return maxResult;

    }
}
